/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include "框架/工作区/节点视口/节点构建.h"


C_节点面板* f_节点构建_变量引用(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_变量引用(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_回写节点(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_回写节点(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_I8变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_I8变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_单值浮点变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_单值浮点变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_单值整数变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_单值整数变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_无符号整数变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_无符号整数变量(C_节点面板* plane, C_节点基类* node);


C_节点面板* f_节点构建_线段变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_线段变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_vec2变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_vec2变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_I8数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_I8数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_F32数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_F32数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_I32数组变量构建(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_I32数组变量构建(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_UI32数组变量构建(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_UI32数组变量构建(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_矩阵数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_矩阵数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_vec3变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_vec3变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_ivec3变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_ivec3变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_vec2数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_vec2数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_vec3数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_vec3数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_ivec2数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_ivec2数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_ivec3数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_ivec3数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_vec4数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_vec4数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_矩阵构建(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_矩阵构建(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_平面变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = nullptr, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_平面变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_线段1D变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_线段1D变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_观察矩阵构建(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_观察矩阵构建(C_节点面板* plane, C_节点基类* node);


C_节点面板* f_节点构建_数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_多边形成员数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_多边形成员数组变量(C_节点面板* plane, C_节点基类* node);





C_节点面板* f_节点构建_数组添加元素(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组添加元素(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数组属性(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组属性(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_取数组元素(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_取数组元素(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_取数组头尾元素(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_取数组头尾元素(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_查找数组元素(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_查找数组元素(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_删除数组元素(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_删除数组元素(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_取内存邻接数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_取内存邻接数据(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_插入数组节点(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_插入数组节点(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_VecSphere数组变量(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_VecSphere数组变量(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_合并数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_合并数据(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_合并数组(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_合并数组(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_复制数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_复制数据(C_节点面板* plane, C_节点基类* node);


C_节点面板* f_节点构建_单值钳制(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_单值钳制(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_矢量钳制(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_矢量钳制(C_节点面板* plane, C_节点基类* node);



C_节点面板* f_节点构建_数组元素统计(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组元素统计(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_索引数组排序(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_索引数组排序(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数组重排(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组重排(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_八叉树数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_八叉树数据(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_转换数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_转换数据(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_取成员数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_取成员数据(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_坐标取数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_坐标取数据(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_取空间邻接数据(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_取空间邻接数据(C_节点面板* plane, C_节点基类* node);

//C_节点面板* f_节点构建_合并数组(S_UI创建环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
//void		f_节点重置_合并数组(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数组打乱(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组打乱(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数组抽取(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组抽取(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数组绑定索引节点(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组绑定索引节点(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数组填充节点(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数组填充节点(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数据切换(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数据切换(C_节点面板* plane, C_节点基类* node);




C_节点面板* f_节点构建_文件路径节点(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_文件路径节点(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_行字符串(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_行字符串(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_行字符串数组(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_行字符串数组(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_数值转字符串(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_数值转字符串(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_合并字符串(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_合并字符串(C_节点面板* plane, C_节点基类* node);



C_节点面板* f_节点构建_包围盒(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_包围盒(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_包围盒数组(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_包围盒数组(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_取体素属性(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_取体素属性(C_节点面板* plane, C_节点基类* node);

C_节点面板* f_节点构建_设置体素属性(S_UI渲染环境& ctx, S_设备环境& ctx_3d, C_节点基类* node = 0, C_节点树* tree = nullptr, const std::u16string& name = u"");
void		f_节点重置_设置体素属性(C_节点面板* plane, C_节点基类* node);



void f_变量节点_构建函数初始化();


